package dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import vo.ClienteVO;

public class ClienteDAO {
   
    public static List<ClienteVO> getClientes() {

        Connection con = ConnectionFactory.getConnection();

        List<ClienteVO> lista = new ArrayList<>();

        try {

            String query = "SELECT * FROM Cliente";
            query += " order by nome";
            PreparedStatement stmt = con.prepareStatement(query);
            ResultSet res = stmt.executeQuery();

            while (res.next()) {
                String cpf = res.getString(1);
                String rg = res.getString(2);
                String nome = res.getString(3);
                Date data_nascimento = res.getDate(4);
                String cep = res.getString(5);
                String endereco = res.getString(6);
                int numero = res.getInt(7);
                String complement = res.getString(8);
                String num_cnh = res.getString(9);
                Date validade_cnh = res.getDate(10);
                
                lista.add(new ClienteVO(cpf,rg,nome,data_nascimento,cep,endereco,numero,complement,num_cnh,validade_cnh));
                //System.out.println(lista);
            }
        } catch (Exception e) {
        }
        return lista;
    }
    
    public static List<ClienteVO> getClientePeloCPF(String paramCPF) {

        Connection con = ConnectionFactory.getConnection();

        List<ClienteVO> lista = new ArrayList<>();

        try {

            String query = "SELECT * FROM Cliente WHERE cpf = ?";
            PreparedStatement stmt = con.prepareStatement(query);
            stmt.setString(1, paramCPF);
            ResultSet res = stmt.executeQuery();

            while (res.next()) {
                String cpf = res.getString(1);
                String rg = res.getString(2);
                String nome = res.getString(3);
                Date data_nascimento = res.getDate(4);
                String cep = res.getString(5);
                String endereco = res.getString(6);
                int numero = res.getInt(7);
                String complement = res.getString(8);
                String num_cnh = res.getString(9);
                Date validade_cnh = res.getDate(10);
                
                lista.add(new ClienteVO(cpf,rg,nome,data_nascimento,cep,endereco,numero,complement,num_cnh,validade_cnh));
                //System.out.println(lista);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return lista;
    }
    
    public static void deleteClientePeloCPF(String cpf){
        Connection con=ConnectionFactory.getConnection();
        try{
            String query="DELETE from Cliente Where cpf='"+cpf+"'";
            PreparedStatement stmt = con.prepareStatement(query);
            stmt.executeUpdate();
        }catch(Exception e){e.printStackTrace();}
    }
    
    public static void insertCliente(ClienteVO cliente){
    
    Connection con = ConnectionFactory.getConnection();
        
        try {

            String query = "INSERT INTO Cliente  VALUES(?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement stmt = con.prepareStatement(query);
            
            stmt.setString(1,cliente.getCPF());
            stmt.setString(2, cliente.getRg());
            stmt.setString(3,cliente.getNome());
            stmt.setDate(4,cliente.getDataNascimento());
            stmt.setString(5,cliente.getCep());
            stmt.setString(6, cliente.getEndereco());
            stmt.setInt(7,cliente.getNumero());
            stmt.setString(8, cliente.getComplemento());
            stmt.setString(9,cliente.getNumCNH());
            stmt.setDate (10,cliente.getValidadeCNH());
            stmt.executeUpdate();

           
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public static boolean ClienteExiste(String CPF)
    {
        Connection con = ConnectionFactory.getConnection();
        String cpf="..";
        try{
            String query = "Select * from Cliente where cpf= ?";
            PreparedStatement stmt= con.prepareStatement(query);
            stmt.setString(1,CPF);

            ResultSet res = stmt.executeQuery();
            while(res.next()){
            cpf=res.getString(1);
            
            if(CPF.equals(cpf))
            {            
            return true;
            }}

        }catch(Exception e){

        }  
       return false;       
    }
    public static void alterarCliente(String cpf, String rg, String nome, String dataNascimento, String cep, String endereco, String numero, String complemento,String Num_CNH,String Validade_CNH)
    {
        Connection con=ConnectionFactory.getConnection();
        
        
        try{
            String query="Update Cliente set rg=?,nome=?,data_Nascimento=?,cep=?,endereco=?,numero=?,complemento=?,num_cnh=?,validade_cnh=? where cpf=?";
            PreparedStatement stmt = con.prepareStatement(query);
            stmt.setString(1, rg);
            stmt.setString(2, nome);
            stmt.setString(3, dataNascimento);            
            stmt.setString(4, cep);            
            stmt.setString(5, endereco);
            stmt.setString(6, numero);           
            stmt.setString(7, complemento);            
            stmt.setString(8, Num_CNH);                
            stmt.setString(9, Validade_CNH);  
            stmt.setString(10, cpf);
            
            stmt.executeUpdate();          
            
        }catch(Exception e){
            e.printStackTrace();
        }

    }
    
}
